home *** CD-ROM | disk | FTP | other *** search
- /* $Id: I3DEX.H 1.5 1997/04/30 00:46:16 damien Exp $ */
- /*****************************************************************************\
- * *
- * I3DEx.h *
- * I3DExtension definition *
- * I3DExDataExchanger definition *
- * *
- * Copyright (c) 1995, Ray Dream, Inc. All rights reserved. *
- * *
- \*****************************************************************************/
-
- #ifndef __I3DEX__
- #define __I3DEX__
-
- #ifndef __3DCOTYPE__
- #include "3DCoType.h"
- #endif
-
- struct IShUtilities;
- struct IShView;
-
- //****** Globally Unique Ids **************************************************
-
- DEFINE_GUID(IID_I3DExtension, 0xB0210D00L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
- DEFINE_GUID(IID_I3DExDataExchanger, 0xB295B680L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
- DEFINE_GUID(IID_I3DExDataExchanger9, 0x09608D40L, 0xC09F, 0x11D0, 0x94, 0xE5, 0x00, 0x00, 0xC0, 0xE4, 0x45, 0x87);
-
- DEFINE_GUID(IID_I3DNamedExtension, 0xb80fa570, 0xb2c8, 0x11d0, 0x85, 0x3e, 0x0, 0xa0, 0xc9, 0xc, 0x1b, 0xf1);
-
-
- /*****************************************************************************\
- * I3DExtension *
- * *
- * Contains utility methods that are complements to IUnkown, like Clone() *
- * *
- * *
- \*****************************************************************************/
-
- #undef INTERFACE
- #define INTERFACE I3DExtension
-
- DECLARE_INTERFACE_(I3DExtension, IUnknown) {
- // IUnknown methods
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
- STDMETHOD_(ULONG, AddRef) (THIS) PURE;
- STDMETHOD_(ULONG, Release) (THIS) PURE;
-
- // I3DExtension methods
- STDMETHOD(ShellUtilitiesInit) (THIS_ IShUtilities* shellUtilities) PURE;
- STDMETHOD_(I3DExtension*, Clone) (THIS) PURE;
- };
-
- //******************************************
-
- //enables an extension to do some file handling on its own (gives a starting point for folder scans etc.)
- DECLARE_INTERFACE_(I3DNamedExtension, IUnknown) {
- STDMETHOD(SetExtensionFullPathName) (const char *fullPathName) PURE;
- };
-
- /*****************************************************************************\
- * I3DExDataExchanger *
- * *
- * Allows the Shell to handle the UI of the 3D Component and the *
- * Component's public data. *
- * Handles the communication between the 3D Component and the Shell *
- * *
- * All other I3DEx... interfaces inherit from this one *
- * *
- \*****************************************************************************/
-
- typedef struct ExtensionData {
- ULONG fType;
- ULONG fID;
- } ExtensionData;
-
- typedef struct ExtensionDataMap {
- short fNbExtensionData; // Number of ExtensionData
- ExtensionData fExtensionData[1]; // Array with fNbExtensionData entries
- } ExtensionDataMap;
-
-
- #undef INTERFACE
- #define INTERFACE I3DExDataExchanger
-
- DECLARE_INTERFACE_(I3DExDataExchanger, I3DExtension) {
- // IUnknown methods
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
- STDMETHOD_(ULONG, AddRef) (THIS) PURE;
- STDMETHOD_(ULONG, Release) (THIS) PURE;
-
- // I3DExtension methods
- STDMETHOD(ShellUtilitiesInit) (THIS_ IShUtilities* shellUtilities) PURE;
- STDMETHOD_(I3DExtension*, Clone) (THIS) PURE;
-
- // I3DExDataExchanger methods
- STDMETHOD_(ExtensionDataMap*, GetExtensionDataMap) (THIS) PURE; // Return NULL if GetResID is to be used
- STDMETHOD_(void*, GetExtensionDataBuffer) (THIS) PURE;
- STDMETHOD(ExtensionDataChanged) (THIS) PURE;
- STDMETHOD(HandleEvent) (THIS_ ULONG sourceID) PURE;
- STDMETHOD_(short, GetResID) (THIS) PURE;
- };
-
- #undef INTERFACE
- #define INTERFACE I3DExDataExchanger9
-
- DECLARE_INTERFACE_(I3DExDataExchanger9, I3DExtension) {
- // IUnknown methods
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
- STDMETHOD_(ULONG, AddRef) (THIS) PURE;
- STDMETHOD_(ULONG, Release) (THIS) PURE;
-
- // I3DExtension methods
- STDMETHOD(ShellUtilitiesInit) (THIS_ IShUtilities* shellUtilities) PURE;
- STDMETHOD_(I3DExtension*, Clone) (THIS) PURE;
-
- // I3DExDataExchanger methods
- STDMETHOD_(ExtensionDataMap*, GetExtensionDataMap) (THIS) PURE; // Return NULL if GetResID is to be used
- STDMETHOD_(void*, GetExtensionDataBuffer) (THIS) PURE;
- STDMETHOD(ExtensionDataChanged) (THIS) PURE;
- STDMETHOD(HandleEvent) (THIS_ ULONG sourceID, IShView* view, ULONG message) PURE;
- STDMETHOD_(short, GetResID) (THIS) PURE;
- };
-
- #endif
-
-